package com.springboot.controller;


import com.springboot.annotation.RequireRole;
import com.springboot.common.Result;
import com.springboot.entity.Category;
import com.springboot.service.ICategoryService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

/**
 * 商品分类表 前端控制器
 *
 * @author zjb
 * @since 2025-10-18
 */
@RestController
@RequestMapping("/category")
public class CategoryController {
    @Resource
    private ICategoryService ICategoryService;

    /**
     * 添加商品分类
     *
     * @param category 分类信息
     * @return 添加结果
     */
    @PostMapping()
    public Result addCategory(@RequestBody Category category) {
        return ICategoryService.addCategory(category);
    }

    /**
     * 删除商品分类
     *
     * @param categoryId 分类ID
     * @return 删除结果
     */
    @DeleteMapping("/{categoryId}")
    public Result deleteCategory(@PathVariable Integer categoryId) {
        return ICategoryService.deleteCategory(categoryId);
    }

    /**
     * 更新商品分类信息
     *
     * @param categoryId 分类ID
     * @param category   分类更新信息
     * @return 更新结果
     */
    @PutMapping("/{categoryId}")
    public Result updateCategory(@PathVariable Integer categoryId,@RequestBody Category category){
        return ICategoryService.updateCategory(categoryId,category);
    }

    /**
     * 获取商品分类列表（树状结构）
     *
     * @param pageNum  页码
     * @param pageSize 每页显示数量
     * @return 分类树状结构数据
     */
    @GetMapping("/tree")
    public Result getCategoryAll(@RequestParam Integer pageNum, @RequestParam Integer pageSize) {
        return ICategoryService.getCategoryAll(pageNum, pageSize);
    }

    /**
     * 获取商品分类列表和层级关系
     *
     * @return 分类列表和层级关系数据
     */
    @GetMapping("/hierarchy")
    public Result getCategoryWithHierarchy() {
        return ICategoryService.getCategoryWithHierarchy();
    }

    /**
     * 获取级联选择器格式的分类数据
     *
     * @return 级联选择器格式的分类数据
     */
    @GetMapping("/cascader")
    public Result getCategoryForCascader() {
        return ICategoryService.getCategoryForCascader();
    }
}